package KategoriBarang;

import Kasir.Kasir;
import Koneksi.Koneksi;
import java.sql.*;
import java.sql.Connection;
import java.util.*;

/**
 *
 * @author Astri
 */
public class KategoriKontrol {

    Connection konek;
    private static KategoriKontrol kotrolKategori;
    private Kategori Kategori;

    public KategoriKontrol(Connection konek) {
        this.konek = konek;
    }

    public static KategoriKontrol getKoneksiKontrol() {
        Koneksi k = new Koneksi();
        if (kotrolKategori == null) {
            kotrolKategori = new KategoriKontrol(k.getConnection());
        }
        return kotrolKategori;
    }

    public void simpanKategoriStatement(Kategori kategori) throws SQLException {
        String kode = kategori.getKodeKategori();
        String nama = kategori.getNamaKategori();
        String sql = "insert into kategori(kodeKategori,namaKategori)" + "values('" + kode + "','" + nama + "')";

        Statement stat = konek.createStatement();
        stat.executeUpdate(sql);
    }

    public void hapusKategoriStatement(Kategori kategori) throws SQLException {

        String kode = kategori.getKodeKategori();
        String nama = kategori.getNamaKategori();
        String sql = "delete from kategori where kodeKategori='" + kode + "'";
        
        Statement stat = konek.createStatement();
        stat.executeUpdate(sql);  

    }
        public void updateKategoriStatement(Kategori kategori) throws SQLException {

        String kode = kategori.getKodeKategori();
        String nama = kategori.getNamaKategori();
        String sql = "update kategori set namaKategori='"+nama+"'where kodeKategori='" + kode + "'";
        Statement stat = konek.createStatement();
        stat.executeUpdate(sql);
    }


    public List<Kategori> getAllKategori() throws SQLException {
        PreparedStatement prepare = null;
        ResultSet rs = null;
        String sql = "select kodeKategori,namaKategori from kategori order by kodeKategori";
        prepare = konek.prepareStatement(sql);
        rs = prepare.executeQuery();
        List<Kategori> kategoris = new ArrayList<Kategori>();
        while (rs.next()) {
            Kategori kategori = new Kategori();
            String kode = rs.getString("kodeKategori");
            String nama = rs.getString("namaKategori");
            kategori.setKodeKategori(kode);
            kategori.setNamaKategori(nama);
            kategoris.add(kategori);
        }
        konek.commit();
        return kategoris;

    }
    
    public Kategori cariKategori(Kategori kategori) throws SQLException{
        CallableStatement callst = null;
        
        String sql = "call cariKategori(?,?)";
        callst = konek.prepareCall(sql);
        callst.setString(1, kategori.getKodeKategori());
        callst.registerOutParameter(2, java.sql.Types.VARCHAR);
        callst.execute();
        
        String nama = callst.getString(2);
        callst.execute();
        kategori.setNamaKategori(nama);
        return kategori;       
    }
}
